﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace BDSim
{
    public class CPolyFitDLL
    {
        //////////////////////////////////////////////////////////
        //函数名称：PolyFit
        //函数功能：多项式拟合
        //输入：
        //    (1) X：多项式拟合的自变量;
        //    (2) Y：多项式拟合的因变量;
        //    (3) N：自变量的长度;
        //    (4) L：多项式拟合的阶数;  
        //输出：
        //    (1) P：多项式拟合的系数;
        //返回值：无
        /////////////////////////////////////////////////////////
        [DllImport("CPolylFitDLL.dll", EntryPoint = "PolyFit", CallingConvention = CallingConvention.Cdecl)]
        public static extern int PolyFit(double[] X, double[] Y, int N, int L, double[] P);

        //////////////////////////////////////////////////////////
        //函数名称：PolyVal
        //函数功能：根据多项式拟合得到的系数求任意长度的变量
        //输入：
        //    (1)  P：多项式拟合的系数；
        //    (2)  X：多项式的自变量；
        //    (3)  N：自变量长度；
        //    (4)  M：多项式拟合的阶数；
        //输出：
        //    (1) PY：求得的因变量（长度为N）；
        //返回值：无
        /////////////////////////////////////////////////////////
        [DllImport("CPolylFitDLL.dll", EntryPoint = "PolyVal", CallingConvention = CallingConvention.Cdecl)]
        public static extern int PolyVal(double[] P, double[] X, double[] PY, int N, int M);


        //////////////////////////////////////////////////////////
        //函数名称：PolyVal
        //函数功能：根据多项式系数求单个值
        //输入：
        //    (1)  P：多项式系数；
        //    (2)  X：自变量； 
        //    (3)  N：多项式阶数；
        //输出：无
        //返回值：PY
        /////////////////////////////////////////////////////////
        [DllImport("CPolylFitDLL.dll", EntryPoint = "PolyVal2", CallingConvention = CallingConvention.Cdecl)]
        public static extern int PolyVal2(double[] P, double X, ref double PY, int N);

    }
}
